package com.atguigu.lease.common.handler;

import com.atguigu.lease.model.enums.ItemTypeEnum;
import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;

/**
 * 将字符串转为 ItemTypeEnum类型枚举对象的消息转换器
 */
//@Component
public class StringToItemTypeEnumConverter implements Converter<String, ItemTypeEnum> {//泛型必须正确：泛型1表示接口接受的参数类型、泛型2表示要转换的类型
    //转换方法： 将接受到的source 转为返回值类型对象
    @Override
    public ItemTypeEnum convert(String source) {
        //source = "1"| "2"
        //1、获取ItemTypeEnum所有的枚举对象
        ItemTypeEnum[] itemTypeEnums = ItemTypeEnum.class.getEnumConstants();
        //2、使用每个枚举对象的code值和 source进行比较，比较成功 则返回枚举对象
        for (ItemTypeEnum itemTypeEnum : itemTypeEnums) {
            if(itemTypeEnum.getCode().equals(Integer.parseInt(source))) {
                return itemTypeEnum;
            }
        }
        throw new RuntimeException("type:"+source+"值没有匹配的类型");
    }
}
